package cluster;

import redis.clients.jedis.*;

import java.io.IOException;
import java.util.HashSet;
import java.util.Set;

/**
 * redis 集群
 * @author:         MI
 * @email:          448341911@qq.com
 * @createTime:     2025/8/17 18:19
 * @updateUser:     MI
 * @updateTime:     2025/8/17 18:19
 * @updateRemark:   修改内容
 * @version:        1.0
 */
public class ClusterTest {
    public static void main(String[] args) throws IOException {
        // 不管是连主备，还是连几台机器都是一样的效果
/*        HostAndPort hp1 = new HostAndPort("192.168.8.207",7291);
        HostAndPort hp2 = new HostAndPort("192.168.8.207",7292);
        HostAndPort hp3 = new HostAndPort("192.168.8.207",7293);*/
        HostAndPort hp4 = new HostAndPort("192.168.110.65",6379);

        HostAndPort hp5 = new HostAndPort("192.168.110.66",6379);
        HostAndPort hp6 = new HostAndPort("192.168.110.67",6379);

        Set nodes = new HashSet<HostAndPort>();
/*        nodes.add(hp1);
        nodes.add(hp2);
        nodes.add(hp3);*/
        nodes.add(hp4);
        nodes.add(hp5);
        nodes.add(hp6);

//        JedisCluster cluster = new JedisCluster(nodes);

        // 2. 配置连接池
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxTotal(100); // 最大连接数
        poolConfig.setMaxIdle(20);   // 最大空闲连接数

        // 3. 配置客户端参数（包含密码认证）
        JedisClientConfig clientConfig = DefaultJedisClientConfig.builder()
                .password("seata@user123") // 设置Redis密码
                .connectionTimeoutMillis(2000) // 连接超时时间（毫秒）
                .socketTimeoutMillis(2000)    // 读写超时时间（毫秒）
                .build();

        // 4. 创建JedisCluster实例（Jedis 5.2.0 版本构造器写法）
        JedisCluster cluster = new JedisCluster(
                nodes,        // 集群节点集合
                clientConfig  // 客户端配置（包含密码、超时时间等）
        );
        cluster.set("gupao:cluster", "qingshan2673");
        System.out.println(cluster.get("gupao:cluster"));
        cluster.close();
    }
}
